#ifndef ICOMMAND_H
#define ICOMMAND_H



#include <QByteArray>
#include <QDataStream>
#include <QDebug>
#include <QSharedPointer>

namespace Common {

class Core;

class ICommand
{
public:
	typedef QSharedPointer<ICommand> SPtr;

public:
	virtual ~ICommand(){}

public:
	virtual void processResponse(QByteArray &data) = 0;

	virtual bool isWaitingForResponce() = 0;
	virtual bool isTimedOut(quint32 msec) = 0;

	virtual void execute(Core* core) = 0;
	virtual QString name() const = 0;
	virtual QString logAfterExecute() const = 0;
	virtual QString logAfterResponse() const = 0;

protected:
	virtual void execute() = 0;
};

}

#endif // ICOMMAND_H
